Data detection in conventional prior art peak-detection magnetic recording channels is achieved by first differentiating an analog signal and then processing the differentiated signal with a zero-crossing detector to determine the presence or absence of a zero-crossing event within a detection window. Data detection in a digital communication channel is generally based on periodically sampling the amplitude of the transmitted signal. In the absence of noise or other imperfections, the zero crossings of derivative signals in peak detection occur only at times corresponding to clock times at which a transition was written. Enhancements, such as precompensation and run-length limited codes have extended the performance of peak detection systems.
Run-length limited block codes (RLL), in particular, have been responsible for significant improvements in system performance. Run length limited block codes intended for use in hard disk drives typically have a coding density of I/J, where I is an integer number which is ordinarily an integer multiple or submultiple of 8, and J is a larger integer. I data bits are coded into J binary channel symbols or "channel bits". The constraint that I is a multiple or submultiple of 8 arises from the outer, error correcting code, which works on a byte-by-byte basis. That is, the number of bits in error within a byte is either zero or greater than zero, and how much greater than zero is not important to the error correcting code. Decoding a block of channel bits which contains one or more error bits contaminates the entire block. Accordingly, keeping block boundaries aligned with byte boundaries reduces the number of contaminated bytes.
Other important parameters of these codes are the run length constraints. These are usually labeled (d,k,l), where d is the minimum number of zeroes between ones, k is the maximum number of zeroes between ones, and l is the maximum number of zeroes between ones in the odd/even substrings. For all high density codes, d=0, while the k constraint ensures sufficient transitions for timing recovery and AGC purposes. The l constraint avoids quasicatastrophic sequences which would reduce the effectiveness of maximum likelihood (ML) detectors.
Attempts have been made in the prior an to increase coding densities of RLL block codes, however, the error propagation has also increased. For example, codes based on two byte blocks, having density 16/17 and constraint set: (0,6,6) are possible, but the error propagation of such codes is less than desirable, since the code length is two bytes. These codes would convert each channel bit error to two bytes, making it far more likely that the error correcting outer code would be overloaded at a given noise level. Also, codes based on two byte blocks would require extremely large "codebooks". In addition, codes which work on only one byte at a time, with no memory of previous bytes, like the one described above, convert each channel bit error with only a single error byte. It is therefore an object of the present invention to address some of the deficiencies of the prior art and provide a technique for increasing the density of run length limited block codes without increasing the associated error propagation.